// pages/video/video.js
import request from '../../utils/request'
const { newVideoList } = require('./index')
Page({

  /**
   * 页面的初始数据
   */
  data: {
    videoGroupList: [],
    navid: '',
    videoList: [],
    videoId: '',
    videoUpdateTime: [],
    isTriggered: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    //获取导航数据
    this.getVideoGroupListData()
  },

  // 获取导航数据
  async getVideoGroupListData() {
    let videoGroupListData = await request('/video/group/list')
    this.setData({
      videoGroupList: videoGroupListData.data.slice(0, 14),
      navid: videoGroupListData.data[0].id
    })
    this.getVideoList(this.data.navid)
  },

  changeNav(event) {
    let navid = event.currentTarget.id
    this.setData({
      navid: +navid,
      videoList: []
    })
    wx.showLoading({
      title: '正在加载',
    });
    this.getVideoList(this.data.navid)
  },

  //获取列表数据
  async getVideoList(navid) {
    if (!navid) {
      return;
    }
    let videoListData = await request('/video/group', { id: navid })
    wx.hideLoading()
    let index = 0
    let videoList = videoListData.datas.map(item => {
      item.id = index++
      return item
    })
    this.setData({
      videoList,
      isTriggered: false  //下拉刷新
    })
  },

  //多个视频同时播放的问题
  handlePlay(event) {
    /**
     * 多个视频同时播放的问题
     * 
     * 点击播放需要找到上一个播放的视频
     * 在播放新视频的同时关闭上一个视频
     * 
     * 关键：
     * 如何找到上一个视频的实例对象
     * 如何确定点击播放的视频和正在播放的视频是不是同个视频
     */
    let vid = event.currentTarget.id
    // this.vid !==vid && this.videoContext&&this.videoContext.stop()
    // this.vid = vid
    this.setData({
      videoId: vid
    })
    this.videoContext = wx.createVideoContext(vid)
    //判断当前视频是否有播放记录
    let { videoUpdateTime } = this.data
    let videoItem = videoUpdateTime.find(item => item.vid = vid)
    if (videoItem) {
      this.videoContext.seek(videoItem.currentTime)
    }
    this.videoContext.play()

  },

  //监听视频播放进度
  handleTimeUpdate(event) {
    console.log(event);
    //创建一个对象 存储数据
    let videoTimeObj = { vid: event.currentTarget.id, currentTime: event.detail.currentTime }
    let { videoUpdateTime } = this.data
    //取出videoUpdateTime中数据
    let videoItem = videoUpdateTime.find(item => item.vid === videoTimeObj.vid)
    if (videoItem) {
      videoItem.currentTime = videoTimeObj.currentTime
    } else {
      videoUpdateTime.push(videoTimeObj)
    }
    this.setData({
      videoUpdateTime
    })
  },
  //视频结束从videoUpdateTime中删除它
  handleEnded(event) {
    let { videoUpdateTime } = this.data
    videoUpdateTime.splice(videoUpdateTime.findIndex(item => item.vid = event.currentTarget.id), 1)
    this.setData({
      videoUpdateTime
    })
  },

  //下拉刷新
  handleRefresh(event) {
    console.log("success");
    this.getVideoList(this.data.navid)
  },

  handleToLower() {
    console.log('scroll-view 上拉触底');
    // 数据分页： 1. 后端分页， 2. 前端分页
    console.log('发送请求 || 在前端截取最新的数据 追加到视频列表的后方');
    console.log('网易云音乐暂时没有提供分页的api');
    let videoList = this.data.videoList;
    // 将视频最新的数据更新原有视频列表数据中
    videoList.push(...newVideoList);
    this.setData({
      videoList
    })
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
    //只有定义了这个事件,右上角才会有转发的menu
    /* from 可以判断来自button还是menu */
    console.log(from); 
    //自定义 user-defined
    if (from==='button'){
      return {
        title:'from button',
        page:'/pages/video/video',
        imageUrl:'/static/image/nvsheng.jpg'
      }
    } else {
      return {
        title:'from menu',
        page:'/pages/video/video',
        imageUrl:'/static/image/nvsheng.jpg'
      }
    }

  }
})